来源 | AI科技大本营(ID:rgznai100)深度神经网络(DNN)在图像、语言处理等领域获得了巨大成功,而如何将这些网络部署在ASIC、FPGA等嵌入式设备仍是热门研究方向。结构搜索,以及传统的剪枝、量化等压缩方法,都可以有效减小模型的内存占用和计算量,故而已经成为模型部署前的必经工序。其中模型的量化操作简单,收益直观,可以在损失很小的精度的前提下轻松将模型大小压缩数倍,成倍的提升运算速度,故而一直是模型压缩的热点研究方向。
近期美国东北大学王言治教授和林雪教授研究组提出了一种组合式量化方法,在获得更高准确率的同时,最大限度提升了FPGA的硬件利用率,实现了SOTA的准确率-推理速度共同优化。
该文章提出的Mixed Scheme Quantization (MSQ) 在Zynq XC7Z020 and XC7Z045上分别实现了2.1倍和4.1倍的加速,并将多任务模型在4bit下保持与浮点模型相似的精度。该文章收录于计算机体系结构顶会The 27th IEEE International Symposium on High-Performance Computer Architecture (HPCA-27)。
现有的量化方法
模型量化是指将权重和中间特征用更低的bit数表示,例如相比于FP32(浮点数),int8、int4甚至binary(1-bit)、ternary(2-bit)可以成倍减少模型大小,并极大的提升运算速度。难点在于,一方面,如何在使用低比特的同时保持模型的准确率,如binary和ternary量化,一般会造成分类任务(如ImageNet)上3%-10%的精度损失。另一方面,低比特算子本身的设计也要依据不同硬件平台的支持情况制定最优方案。现有的低比特算子主要可以分为如下两类。
定点数量化:直观的用低比特定点数代替浮点数,从而利用硬件支出更低的低比特乘法和加法。
2的幂量化:将权重量化为2的幂形式,从而权重与输入的乘法操作可以被替换为成本极低的移位运算,可以较大地提升运算速度。但是其量化数值的分布极端不均匀常常导致精度下降。
基于此,该文专注于更容易保持精度的4比特量化,在算子上同时采用了定点数和2的幂量化方法。
由图所示,以4比特量化为例,定点量化是均匀分布量化中心点,所以可以达到较少的准确率损失。但网络间的运算操作仍是较复杂的乘法运算。反之,2的幂则可通过移位加法大幅提升运算速度,但由于2的幂的不均匀分布(多数量化中心点集中于0附近)导致单纯使用2的幂量化则会产生无法忽视的准确率损失。此外,提升2的幂量化的比特数仅会过度提升0附近分辨率,并不能改善精度损失。如何才能鱼与熊掌兼得?此篇论文首先使用两个2的幂之和作为量化数值的表示形式,也就是sum-power-of-2(SP2)。SP2有类似定点量化的均匀分布,同时其分辨率在0附近相对较高,更适合高斯分布的权重。SP2可以加法以及移位取代原先昂贵的乘法运算,进而大大提升了运算速度,并保持了准确率。再进一步透过上表可以详细了解定点量化以及2的幂之和量化方法两者间的运算差异。以一次权重与激活函数运算为例,若是定点量化,必须进行累加多次,是较为复杂的乘法运算。反之,若是SP2量化,只需进行两次移位以及一次加法就能完成,如此作法将能大大节省了运算成本!
然而,仅仅如此是不够的,因为不论是上述何种量化方法,均只能利用硬件资源的一部分,导致剩余部分闲置浪费。现有的方法大多数局限于对某一种方法的设计与提升,而忽视了在特定硬件,例如FPGA上,存在着多种计算模块可供利用。此时,设计不同的算子在相应模块上并行计算,将大大提升硬件利用效率。本工作同时采用定点数和2的幂两种量化方法 Mix scheme quantizaiton(MSQ),如下图显示,可以定点量化以及2的幂量化分别采取异质化的设计,前面也提到因为定点数的乘法较为复杂,所以定点数可以置于FPGA的DSP模块上运算,而2的幂量化方法,由于已经将乘法替换为移位运算,则可以完全置于Look Up Table (LUT)模块进行计算,如此可以平行充分利用了FPGA的运算资源,所以在运算速度上将显着比仅使用定点量化或是2的幂量化都来得更加高效。至于如何决定神经网络层裡哪些权重要是定点量化,哪些权重又必须是2的幂之和量化,在AUTOQ: AUTOMATED KERNEL-WISE NEURAL NETWORK QUANTIZATION ㄧ文(第7页)也提到,透过强化学习进行模型结构搜索,发现他们的算法可以针对不同卷积核中的权重方差来给予不同精度分配。换个角度思考,若单纯以每个滤波器的方差进行判断,决定哪个滤波器要使用定点量化或是2的幂之和量化,既可以直接省去大量结构搜索的时间,又天然的适合硬件并行运算。并且,虽然2的幂之和量化中心附近较单纯2的幂量化分佈更加均匀,但仍然有集中在0附近的趋势。所以,把权重分布较均匀(方差大)的过滤器使用定点量化,而权重分布较集中于0附近的(方差小)过滤器则采用2的幂之和量化,不仅简洁直观地解决了不同量化方法的选取问题,还能在准确率上进一步提升甚至达到无损。确定了量化目标,该文采用直通估计器(STE)和 ADMM(Alternating Direction Method of Multipliers)两种量化算法,分别应用于中间特征和权重的量化。其中权重采用的ADMM算法具有非常强的自由度和收敛效果,适合自定义的SP2量化目标。而中间特征参与运算时,在权重是SP2的情况下就可以做到移位运算,故而全部采用直通估计器做简单的定点数量化。在准确率的结果表现上,MSQ超越现行各种SOTA的量化方法,以下表ResNet-18在Imagenet 资料集表现为例,MSQ比未量化前的基础模型更加提升了0.51%的准确率。(量化带来的预防过拟合效果)且不仅仅是在图像分类上准确率达到最高,同样在YOLO-v3目标检测的任务上也有相当不错的结果,在640分辨率下mAP几乎无损。另外,在语音识别的任务上同样可以在4bit轻松达到不掉精度的效果。验证了MSQ框架的泛用性,非仅限于单一任务。在硬件利用率方面,他们以MSQ与传统定点量化方法相比,并分别实验在两块FPGA(XC7Z045以及XC7Z020)上。如下图显示,由于传统定点量化方法多数仅能利用FPGA的DSP运算资源,导致XC7Z020的LUT资源仅使用45%,XC7Z045更只使用了24%。随着2的幂之和使用比例的提升,LUT的资源利用率也相应增加,最终他们提出的MSQ量化框架在同样DSP用满的情况下,XC7Z020的LUT资源使用达77%,XC7Z045的LUT资源利用也有72%。硬件利用率也直接指导了算法上最优的定点数-SP2选取比例。根据该文的实验结果,在运算单元较少的XC7Z020芯片上,定点数-SP2比例在1:1.5时并行效果最好,硬件吞吐量达到最大。而对于更大的XC7Z045,这个比例在1:2时达到最优。FPGA的LUT资源利用率的提升也反映在吞吐量上,如下表显示,以XC7Z020 为例,相比传统定点量化方法,MSQ的峰值吞吐量增加了2.5倍(从52.8到132GOPS),XC7Z045更提升多达3倍(208到624GOPS)。论文中也提及延迟度表现对比,XC7Z020在传统4比特定点量化的ResNet-18处理每张图片的延迟为100.7毫秒,在MSQ量化框架下仅需47.1毫秒,提升2.13倍。XC7Z045也从25.1毫秒減少至10.1毫秒,提升倍率为2.49倍。若与现行通用的8比特量化框架相比,MSQ在XC7Z020可以减少3.83倍的延迟,XC7Z045延迟更能减少至4.48倍。在能量效率上,基于MSQ 4比特量化的FPGA推理相比于基于Tensor-RT的轻量GPU NVIDIA Jetson AGX 能耗低3倍(4W vs. 15W), 同时速度更快(ResNet-18: 99FPS vs. 78FPS)。如何依据不同的硬件设备提出最优的量化框架仍然是一个极具挑战性的课题。MSQ融合不同量化方法达到最佳硬件利用率的创新思维,为模型量化提出不同维度的解决方案,并且能在极小或是无准确率损失的情况下减少2-4倍的延迟。https://arxiv.org/pdf/2012.04240.pdf王言治是美国东北大学电子与计算机工程系助理教授。他在清华电子系和南加州大学拿到本科和博士学位。他的主要研究方向是深度神经网络的加速与安全性。他们的CoCoPIE压缩编译协同优化框架可以实现大多数神经网络在移动端的实时推理。他的文章广泛发表于各个顶会顶刊,包括机器学习方向AAAI,CVPR,ICML,ICCV,ICLR,IJCAI,ECCV等,电路与设计自动化方向DAC,ICCAD,ISSCC,FPGA等,计算机系统方面ASPLOS,ISCA,MICRO,HPCA,CCS,VLDB,PLDI,ICS,PACT等。他的文章引用超过7200次,得过Google,Mathworks, Intel等研究奖项,得过4项最佳论文奖,另外10次提名,多次设计竞赛奖项。他的研究工作被媒体广泛报道和引用超过400次。他的多位学生已经在各个学校担任教职,包括康涅狄格大学,克莱姆森大学等,工作单位包括谷歌、脸书、腾讯、滴滴(超新星员工)。更多精彩推荐